import KeyMirror from 'keymirror';
import drawLine from './cmd/drawLine';
import drawRoom from './cmd/drawRoom';
import drawWall from './cmd/drawWall';
import noDraw from './cmd/noDraw';
export const drawTypes = KeyMirror({
  NoDraw: null,
  DrawAxes: null,
  DrawRoom: null,
  DrawWall: null,
});
export function drawCmd(type) {
  switch (type) {
    case drawTypes.DrawAxes: {
      return drawLine();
    }
    case drawTypes.DrawRoom: {
      return drawRoom();
    }
    case drawTypes.DrawWall: {
      return drawWall();
    }
    default:
      return noDraw();
  }
}

export { createScenes } from './scenes';


//   let startOffsetX = 0;
//   let startOffsetY = 0;
//   let endOffsetX = 0;
//   let endOffsetY = 0;
//   let selectEntity = null;
//   function selectMouseDown(e) {
//     const loc = windowToCanvas(ctx, e.clientX, e.clientY);
//     console.log('selectMouseDown');
//     e.preventDefault();
//     // let isFound = false;
//     // for (let i = 0; i < scenes.length; i++) {
//     //   const item = scenes[i];
//     //   if (item?.isIn(loc)) {
//     //     // isFound = true;
//     //     editing = true;
//     //     selectEntity = item;
//     //     // startDragging(loc)
//     //     // dragging = polygon;
//     //     // 保存多边形左上角与鼠标按下位置之间的X，Y坐标偏移量
//     //     startOffsetX = loc.x - selectEntity.startPt.x;
//     //     startOffsetY = loc.y - selectEntity.startPt.y;
//     //     endOffsetX = loc.x - selectEntity.endPt.x;
//     //     endOffsetY = loc.y - selectEntity.endPt.y;
//     //     break;
//     //   }
//     // }
//     // if(!isFound)
//     // if(isFound) startDragging(loc)
//     // else console.log('un selected');
//   }
//   const newStartPt = new Point3d();
//   const newEndPt = new Point3d();
//   function selectMouseMove(e) {
//     if (editing) {
//       const loc = windowToCanvas(ctx, e.clientX, e.clientY);
//       e.preventDefault();
//       newStartPt.x = loc.x - startOffsetX;
//       newStartPt.y = loc.y - startOffsetY;
//       newEndPt.x = loc.x - endOffsetX;
//       newEndPt.y = loc.y - endOffsetY;
//       selectEntity.setStartPt(newStartPt);
//       selectEntity.setEndPt(newEndPt);
//       // restoreDrawingSurface(ctx);
//       ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
//       // selectEntity?.render();
//       // console.log('scenes length：', scenes.length);
//       // scenes.forEach(item => {
//       //   item?.render();
//       // })
//     }
//     // drawPolygons();
//   }
//   let moving = false;
//   function selectMouseUp(e) {
//     if (!moving) { // 未开始移动
//       moving = true;
//     } else {
//       editing = false;
//       moving = false;
//       selectEntity = null;
//       // scenes.forEach(item => {
//       //   item?.render();
//       // })
//       // delete selectEntity;
//     }
//     // editing = false;
//   }
// }

// export function drawRoom() {
//   ctx.canvas.addEventListener('mousedown', roomMouseDown);
//   function roomMouseDown(e) {
//     e.preventDefault(); // prevent cursor change
//     // room = new Room(ctx);
//     // room.append(mouseDown);
//     let mouseDown = windowToCanvas(ctx, e.clientX, e.clientY);
//     const lines = bst.findPathId(mouseDown);
//     console.log(lines);
//     saveDrawingSurface(ctx);
//     //   // dragging = true;
//   }
//   // let room = null;
//   // let dragging = false;
//   // let mouseDown = null;
//   // ctx.canvas.addEventListener('mousedown', roomMouseDown);
//   // // ctx.canvas.addEventListener('mousemove', roomMouseMove);
//   // // ctx.canvas.addEventListener('mouseup', roomMouseUp);

//   // function roomMouseDown(e) {
//   //   // room = new Room(ctx);
//   //   mouseDown = windowToCanvas(ctx, e.clientX, e.clientY);
//   //   bst.findPath(mouseDown);
//   //   // room.append(mouseDown);
//   //   // e.preventDefault(); // prevent cursor change
//   //   saveDrawingSurface(ctx);
//   //   // dragging = true;
//   // }
//   // function roomMouseMove(e) {
//   //   if (dragging) {
//   //     e.preventDefault(); // prevent selections
//   //     let loc = windowToCanvas(ctx, e.clientX, e.clientY);
//   //     restoreDrawingSurface(ctx);
//   //     wall.setEndPt(loc);
//   //     wall.render(true);
//   //     //  drawGuidewires(ctx, loc);
//   //     //  if(guidewires) {
//   //     //     drawGuidewires(loc.x, loc.y);
//   //     //  }
//   //   }
//   // }
//   // function roomMouseUp(e) {
//   //   let loc = windowToCanvas(ctx, e.clientX, e.clientY);
//   //   restoreDrawingSurface(ctx);
//   //   wall.setEndPt(loc);
//   //   wall.render(false);
//   //   dragging = false;
//   //   scenes.push(wall);
//   //   // scenes.forEach(item=>console.log(item));
//   //   // message.info(`length: ${scenes.length}`);
//   // }
// }

